package com.ruoyi.system.service;

import com.ruoyi.system.domain.SysWechatAuth;
import com.ruoyi.system.domain.SysWechatConfig;
import com.ruoyi.common.core.domain.entity.SysUser;
import java.util.Map;

/**
 * 微信授权服务接口
 * 
 * @author ruoyi
 * @date 2025-01-12
 */
public interface IWechatAuthService 
{
    /**
     * 获取微信小程序配置
     * 
     * @return 微信配置信息
     */
    SysWechatConfig getWechatConfig();

    /**
     * 通过code获取微信用户openid和session_key
     * 
     * @param code 微信授权码
     * @return 微信用户信息
     */
    Map<String, Object> getWechatUserInfo(String code);

    /**
     * 通过openid查询用户
     * 
     * @param openid 微信openid
     * @return 用户信息
     */
    SysUser selectUserByOpenid(String openid);

    /**
     * 创建微信用户
     * 
     * @param wechatUserInfo 微信用户信息
     * @return 用户信息
     */
    SysUser createWechatUser(Map<String, Object> wechatUserInfo);

    /**
     * 保存微信授权记录
     * 
     * @param wechatAuth 微信授权信息
     * @return 结果
     */
    int saveWechatAuth(SysWechatAuth wechatAuth);

    /**
     * 更新微信授权记录
     * 
     * @param wechatAuth 微信授权信息
     * @return 结果
     */
    int updateWechatAuth(SysWechatAuth wechatAuth);

    /**
     * 通过openid查询微信授权记录
     * 
     * @param openid 微信openid
     * @return 微信授权记录
     */
    SysWechatAuth selectWechatAuthByOpenid(String openid);

    /**
     * 微信用户登录
     * 
     * @param code 微信授权码
     * @return 登录结果
     */
    Map<String, Object> wechatLogin(String code);

    /**
     * 更新用户登录信息
     * 
     * @param userId 用户ID
     * @return 结果
     */
    int updateUserLoginInfo(Long userId);
}
